package com.feeyin.radar.crm.service;

import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.feeyin.radar.commons.Page;
import com.feeyin.radar.crm.form.ContractCaseForm;
import com.feeyin.radar.crm.form.ContractForm;
import com.feeyin.radar.crm.form.CostForm;
import com.feeyin.radar.crm.form.UploadFileForm;
import com.feeyin.radar.crm.model.CodeStore;
import com.feeyin.radar.crm.model.Contract;
import com.feeyin.radar.crm.model.ContractCase;
import com.feeyin.radar.crm.model.CostManage;
import com.feeyin.radar.crm.model.QueryContract;

public abstract interface ContractService
{
  public abstract List getPageDeptContracts(String paramString, Integer paramInteger, Page paramPage, QueryContract paramQueryContract);

  public abstract Integer getPageDetpContractsCount(String paramString, Integer paramInteger, QueryContract paramQueryContract);

  public abstract List getPageMyContracts(String paramString1, String paramString2, String paramString3, Integer paramInteger, Page paramPage, QueryContract paramQueryContract);

  public abstract Integer getPageMyContractsCount(String paramString1, String paramString2, String paramString3, Integer paramInteger, QueryContract paramQueryContract);

  public abstract Contract getContractById(Integer paramInteger);

  public abstract List getContractAddedsById(String paramString, Integer paramInteger);

  public abstract List getContractDetailsByContractId(Integer paramInteger);

  public abstract boolean isFileExists(String paramString1, String paramString2, Integer paramInteger1, Integer paramInteger2, String paramString3);

  public abstract String getStoredPath(String paramString, Integer paramInteger1, Integer paramInteger2);

  public abstract String getStoredRelativePath(Integer paramInteger1, Integer paramInteger2);

  public abstract List getContractDetailUpdateHistorysByContractId(Integer paramInteger);

  public abstract boolean isExistContractTemp(Integer paramInteger);

  public abstract boolean isRepeatAddContract(String paramString);

  public abstract boolean isRepeatUpdateContract(Integer paramInteger, String paramString);

  public abstract List importContract(Integer paramInteger, UploadFileForm paramUploadFileForm, String paramString, MultipartFile paramMultipartFile);

  public abstract boolean insertContract(ContractForm paramContractForm, String paramString, MultipartFile paramMultipartFile);

  public abstract boolean updateContract(ContractForm paramContractForm, String paramString, MultipartFile paramMultipartFile, Integer paramInteger);

  public abstract String updateAllContractAging(String paramString);

  public abstract boolean stopContract(ContractForm paramContractForm, String paramString, MultipartFile paramMultipartFile);

  public abstract boolean cancelContract(ContractForm paramContractForm, String paramString, MultipartFile paramMultipartFile);

  public abstract boolean deleteAdded(String paramString, Integer paramInteger);

  public abstract boolean deleteContractAndDetail(Integer paramInteger);

  public abstract List getContractByCustomerId(Integer paramInteger);

  public abstract boolean updateContractByDynamic(Contract paramContract);
  
  public abstract CodeStore getCodeStoreByType(String type);
  
  public abstract boolean insertContractCase(ContractCaseForm contractCaseForm, String paramString, MultipartFile paramMultipartFile);
  
  public abstract List<ContractCase> getContractCaseListByCaseCode(String caseCode);
  
  public abstract boolean deleteContractCase(String delContractCaseId);
  public abstract Long selectCaseSeq();

  public abstract List<ContractCase> getContractCasesByContractCode(String contractCode);
  
  public abstract List<Contract> getContractListBySameCustomer(Integer contractId);
  
  public abstract List<ContractCase> getContractCaseListByIds(String[] caseIds);
  
  public abstract boolean insertCost(CostForm costForm);
  
  public List<CostManage> getCostManageListByType(String costType);
  
  public abstract List<CostManage> getCostManageListByCostId(String costId);
  
  public abstract Integer updateCostManage(Integer id);
}